package cc.rengu.oltp.service.common.dao;

import cc.rengu.oltp.service.common.entity.BinInfo;

import java.util.List;
import java.util.Set;

/**
 * 银行卡BIN表操作接口类
 * Created by 王成 on 2018/4/20.
 */
public interface BinInfoMapper {
    /**
     * 加载数据源的卡BIN配置信息
     *
     * @param dbPoolCashNode 数据源缓存节点名称
     * @param binInfoList    卡BIN配置信息
     * @throws Exception 异常
     */
    void loadAllCardBinInfo(Set<String> dbPoolCashNode, List<BinInfo> binInfoList) throws Exception;

    /**
     * 加载数据源的卡BIN配置信息
     *
     * @param binInfoList 卡BIN配置信息
     * @throws Exception 异常
     */
    void loadAllCardBinInfo(List<BinInfo> binInfoList) throws Exception;

    /**
     * 查询所有卡BIN配置信息
     *
     * @return 卡BIN信息
     * @throws Exception 异常
     */
    List<BinInfo> selectAllCardBinInfo() throws Exception;

    /**
     * 根据发卡机构查询卡BIN配置信息
     *
     * @param issuerCode 发卡机构标识
     * @return 卡BIN信息
     * @throws Exception 异常
     */
    List<BinInfo> selectAllCardBinInfoByIssuerCode(String issuerCode) throws Exception;

    /**
     * 根据发卡机构查询卡BIN配置信息
     *
     * @param binNo 卡BIN号
     * @return 卡BIN信息
     * @throws Exception 异常
     */
    List<BinInfo> selectAllCardBinInfoByBinNo(String binNo) throws Exception;

    /**
     * 根据主键查询卡BIN配置信息
     *
     * @param issuerCode 发卡机构标识
     * @param binNo      卡BIN
     * @return 卡BIN信息
     * @throws Exception 异常
     */
    BinInfo selectCardBinInfoByPrimaryKey(String issuerCode, String binNo) throws Exception;

    /**
     * 根据主键更新卡BIN信息
     *
     * @param binInfo 卡BIN信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateCardBinInfoByPrimaryKey(BinInfo binInfo) throws Exception;

    /**
     * 登记卡BIN信息
     *
     * @param binInfo 卡BIN信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertCardBinInfo(BinInfo binInfo) throws Exception;
}
